package org.flashIso.engine.core {
	import flash.events.IEventDispatcher;

	/**
	 * @author Marius Dorin Moraru
	 */
	public interface IValidateable extends IEventDispatcher {
		
		/**
		 * True if a validate operation is pending
		 **/
		function set invalidated(value:Boolean) : void;
		function get invalidated() : Boolean;

		/**
		 * True if validate operation is performed automaticaly
		 **/
		function set autoValidation(value:Boolean) : void;
		function get autoValidation() : Boolean;

		
		/**
		 * True if validation showld be performed imediately 
		 * (with performance costs)
		 **/
		function set atomicValidation(value:Boolean) : void;
		function get atomicValidation() : Boolean;
		

		function validateNow() : void;
		
		/**
		 * Triggers a call of validateNow() method.
		 **/
		function triggerValidation(...parameters) : void;
		
		function get className() : String;
	}
}
